home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS065.dsk
/
DATA BASE.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
10KB
|
358 lines
0 RESTART = 700
10 REM LISTS PROGRAM
20 HTAB 10
40 GOSUB 21000: REM COMMAND LIST
99 REM
100 REM TABLE OF VARIABLES
101 REM
110 REM N1FLDNBR
120 REM N2HDG(FLDNBR1000
130 FOR X = 1 TO A1RECNBR
699 REM
700 REM COMMAND DRIVER
701 REM
710 INPUT "ENTER A COMMAND:<CTRL-G>";REPLY$
720 IF LEFT$(REPLY$,1) = "A" THEN GOSUB 5000
725 IF LEFT$(REPLY$,1) = "B" THEN GOSUB 20000
730 IF LEFT$(REPLY$,1) = "C" THEN GOSUB 6000
740 IF LEFT$(REPLY$,1) = "D" THEN GOSUB 7000
743 IF LEFT$(REPLY$,1) = "E" THEN END
745 IF LEFT$(REPLY$,1) = "F" THEN GOSUB 26000
750 IF LEFT$(REPLY$,1) = "G" THEN GOSUB 8000
760 IF LEFT$(REPLY$,1) = "H" THEN GOSUB 21000
780 IF LEFT$(REPLY$,1) = "N" THEN GOSUB 27000
790 IF LEFT$(REPLY$,1) = "P" THEN GOSUB 10000
800 IF LEFT$(REPLY$,1) = "R" THEN GOSUB 11000
810 IF LEFT$(REPLY$,1) = "S" THEN GOSUB 12000
990 GOTO 700
999 END
1000 REM
1001 REM INITIALIZE
1002 REM
1390 PRINT
1500 REM
1501 REM DEFINE VARIABLES
1502 REM
1510 N9MAXNBRFLDS = 16
1520 DIM N3FLDLN(N9MAXNBRFLDS)
1530 DIM N2SEL$(N9MAXNBRFLDS)
1540 DIM N7FLDNAME$(N9MAXNBRFLDS)
1550 A1RECNBR = 500
1560 A2NXTREC = 1
1990 RETURN
2000 REM
2001 REM DEFINE NEW LIST
2002 REM
2010 HOME
2020 HTAB 12
2030 PRINT "CREATE NEW LIST"
2040 FOR X = 1 TO 39: PRINT "-";: NEXT X: PRINT ""
2050 PRINT
2060 INPUT "HOW MANY FIELDS WITHIN EACH ENTRY";N1FLDNBR
2070 IF N1FLDNBR >0 AND N1FLDNBR <17 THEN 2080
2072 PRINT "ENTER A NUMBER BETWEEN 1 AND 16"
2074 GOTO 2060
2080 REM ENDIF
2990 RETURN
3000 REM
3001 REM OPEN FILE
3002 REM
3900 PRINT : PRINT "NOT IMPLEMENTED.": PRINT
3990 RETURN
5000 REM
5001 REM ADD RECORD FROM KEYBOARD
5002 REM
5010 P1HDG$ = "ADD A RECORD"
5020 GOSUB 30000
5030 PRINT "YOU HAVE ";A1RECNBR -A2NXTREC +1;" RECORDS REMAINING."
5040 PRINT
5045 PRINT "TO EXIT, PRESS RETURN FOR THE": PRINT "FIRST FIELD.": PRINT
5050 FOR X = 1 TO N1FLDNBR
5060 PRINT "ENTER A VALUE FOR ";N7FLDNAME$(X);
5070 INPUT ":<CTRL-G>";WRKSPACE$(A2NXTREC,X)
5072 IF X = 1 THEN IF LEN(WRKSPACE$(A2NXTREC,X)) = 0 THEN RETURN
5074 IF LEFT$(WRKSPACE$(A2NXTREC,X),1) = "/" THEN WRKSPACE$(A2NXTREC,X) = WRKSPACE$(A2NXTREC -1,X): PRINT WRKSPACE$(A2NXTREC,X)
5080 NEXT X
5085 A2NXTREC = A2NXTREC +1
5090 PRINT
5130 GOTO 5050
6000 REM
6001 REM CORRECT A RECORD
6002 REM
6010 P1HDG$ = "CORRECT A RECORD"
6020 GOSUB 30000
6030 INPUT "ENTER THE NUMBER OF THE RECORD:";N
6040 IF N <1 OR N >A2NXTREC -1 THEN PRINT "THE NUMBER IS TOO LOW OR TOO HIGH!<CTRL-G>": GOTO 6030
6045 STARTRCD = N: GOSUB 25000
6050 PRINT
6060 PRINT "ENTER A NEW FIELD OR PRESS RETURN"
6070 PRINT
6075 CV = PEEK(37)
6080 FOR X = 1 TO N1FLDNBR
6085 VTAB CV
6090 PRINT N7FLDNAME$(X);
6095 CALL -868: REM CLEAR LINE
6096 PRINT "<CTRL-G>";
6100 INPUT F$
6110 IF LEN(F$) < >0 THEN WRKSPACE$(N,X) = F$
6120 NEXT X
6130 PRINT
6140 RETURN
6990 RETURN
7000 REM
7001 REM DISPLAY RECORD
7002 REM
7005 STARTRCD = 0
7006 FIRSTRCD = STARTRCD
7010 P1HDG$ = "DISPLAY A RECORD"
7020 GOSUB 30000
7030 PRINT "ENTER THE NUMBER OF THE FIRST RECORD"
7040 PRINT "TO BE DISPLAYED."
7060 PRINT
7070 INPUT "ENTER A NUMBER:";START$
7071 IF LEN(START$) < >0 THEN STARTRCD = VAL(START$)
7072 REM
7090 IF STARTRCD = 0 THEN STARTRCD = 1
7200 IF STARTRCD >A2NXTREC -1 THEN PRINT : GOTO 7800
7210 IF STARTRCD <1 THEN STARTRCD = 1
7250 GOSUB 25000: REM DISPLAY 1 RCD
7260 STARTRCD = STARTRCD +1
7400 IF PEEK(37) <20 THEN 7200
7410 INPUT R$
7430 IF LEFT$(R$,1) = "-" THEN STARTRCD = FIRSTRCD - VAL( RIGHT$(R$, LEN(R$) -1)): GOTO 7600
7440 IF LEFT$(R$,1) = "+" THEN STARTRCD = STARTRCD + VAL( RIGHT$(R$, LEN(R$) -1)) -1: GOTO 7600
7450 IF LEFT$(R$,1) = "E" THEN 7800
7460 IF LEN(R$) < >0 THEN STARTRCD = VAL(R$)
7600 HOME
7605 FIRSTRCD = STARTRCD
7610 GOTO 7072
7800 RETURN
8000 REM
8001 REM ENTER FROM DISK
8002 REM
8010 P1HDG$ = "GET A LIST FROM STORAGE"
8020 GOSUB 30000
8025 PRINT "<CTRL-D>CATALOG"
8027 PRINT
8030 INPUT "ENTER A LIST NAME:";N8FILNAME$
8035 PRINT "<CTRL-D>NOMON C,I,O"
8040 PRINT "<CTRL-D>OPEN ";N8FILNAME$
8050 PRINT "<CTRL-D>READ ";N8FILNAME$
8060 INPUT A1RECNBR$
8065 A1RECNBR = VAL(A1RECNBR$)
8070 INPUT A2NXTREC$
8075 A2NXTREC = VAL(A2NXTREC$)
8080 INPUT N1FLDNBR$
8085 N1FLDNBR = VAL(N1FLDNBR$)
8090 FOR X = 1 TO N1FLDNBR
8100 INPUT N7FLDNAME$(X)
8110 NEXT X
8120 DIM WRKSPACE$(A1RECNBR,N1FLDNBR)
8130 FOR X = 1 TO A2NXTREC -1
8150 INPUT R$
8160 GOSUB 8500
8170 NEXT X
8200 GOTO 8900
8300 REM
8301 REM
8500 REM
8501 REM UNPACK R$ INTO WRKSPACE$
8502 REM
8505 Z = 1
8510 FOR Y = 1 TO LEN(R$)
8520 IF Z >N1FLDNBR THEN RETURN
8530 IF MID$ (R$,Y,1) = "/" THEN Z = Z +1: GOTO 8550
8540 WRKSPACE$(X,Z) = WRKSPACE$(X,Z) + MID$ (R$,Y,1)
8550 NEXT Y
8560 RETURN
8900 PRINT "<CTRL-D>CLOSE ";N8FILNAME$
8910 PRINT
8920 PRINT A2NXTREC -1;" RECORDS GOTTEN FROM STORAGE"
8930 PRINT
8990 RETURN
9000 REM
9001 REM LIST 1 RECORD PER LINE
9002 REM
9010 PRINT "LIST IS NOT IMPLEMENTED YET."
9700 REM COMMAND DRIVER
9990 RETURN
10000 REM
10001 REM PUT TO STORAGE
10002 REM
10010 P1HDG$ = "PUT A LIST TO STORAGE"
10020 GOSUB 30000
10022 PRINT "ENTER A NEW LIST NAME OR PRESS RETURN": PRINT "TO REWRITE THE LIST UNDER THE OLD NAME": PRINT
10025 INPUT "ENTER A LIST NAME:";A$
10030 IF LEN(A$) = 0 THEN PRINT N8FILNAME$
10031 IF LEN(A$) < >0 THEN N8FILNAME$ = A$
10035 PRINT "<CTRL-D>NOMON C,I,O"
10040 PRINT "<CTRL-D>OPEN ";N8FILNAME$
10050 PRINT "<CTRL-D>WRITE ";N8FILNAME$
10060 PRINT A1RECNBR
10070 PRINT A2NXTREC
10080 PRINT N1FLDNBR
10090 FOR X = 1 TO N1FLDNBR
10100 PRINT N7FLDNAME$(X)
10110 NEXT X
10130 FOR X = 1 TO A2NXTREC -1
10140 FOR Y = 1 TO N1FLDNBR
10150 PRINT WRKSPACE$(X,Y);"/";
10160 NEXT Y
10165 PRINT " "
10170 NEXT X
10900 PRINT "<CTRL-D>CLOSE"
10910 PRINT
10920 PRINT A2NXTREC -1;" RECORDS PUT TO STORAGE."
10930 PRINT
10990 RETURN
11000 REM
11001 REM REMOVE A RECORD
11002 REM
11010 P1HDG$ = "REMOVE A RECORD"
11020 GOSUB 30000
11030 INPUT "ENTER THE RECORD NUMBER:<CTRL-G>";N
11040 IF N <1 OR N >A2NXTREC THEN PRINT "THIS RECORD IS NOT PRESENT<CTRL-G>": GOTO 11030
11050 STARTRCD = N
11060 PRINT
11070 GOSUB 25000
11075 PRINT
11080 PRINT "TO CONFIRM REMOVE, PRESS RETURN."
11090 PRINT "TO CANCEL REMOVE, ENTER 'E'."
11100 INPUT R$
11105 IF N = A2NXTREC THEN A2NXTREC = A2NXTREC -1: GOTO 11900
11110 IF LEN(R$) < >0 THEN IF LEFT$(R$,1) = "E" THEN RETURN
11120 FOR X = N TO A2NXTREC
11130 FOR Y = 1 TO N1FLDNBR
11140 WRKSPACE$(X,Y) = WRKSPACE$(X +1,Y)
11150 NEXT Y
11160 NEXT X
11165 A2NXTREC = A2NXTREC -1
11200 PRINT
11210 PRINT "DELETE MADE"
11220 PRINT
11900 RETURN
11990 RETURN
12000 REM
12001 REM SORT THE WORKSPACE
12002 REM
12010 PRINT : PRINT "SORT IS NOT IMPLEMENTED YET.": PRINT
12990 RETURN
20000 REM
20001 REM INITIALIZE WORKSPACE
20002 REM
20005 GOSUB 1000
20010 P1HDG$ = "BEGIN A NEW LIST"
20020 GOSUB 30000
20050 PRINT
20060 PRINT "ENTER THE TITLE OF EACH FIELD WHEN RE-"
20070 PRINT "QUESTED. WHEN YOU HAVE NAMED ALL THE"
20080 PRINT "FIELDS, JUST PRESS RETURN."
20090 PRINT
20100 FOR X = 1 TO 16
20110 PRINT "ENTER A NAME FOR FIELD ";X;: INPUT "<CTRL-G>:";N7FLDNAME$(X)
20120 IF LEN(N7FLDNAME$(X)) = 0 THEN 20200
20130 N1FLDNBR = N1FLDNBR +1
20190 NEXT X
20199 REM
20200 REM
20201 REM
20260 DIM WRKSPACE$(A1RECNBR,N1FLDNBR)
20270 A2NXTREC = 1
21000 REM
21001 REM PRINT MENU
21002 REM
21010 P1HDG$ = "*** COMMAND MENU ***"
21020 GOSUB 30000
21040 PRINT "A - ADD RECORDS FROM KEYBOARD"
21045 PRINT "B - BEGIN A NEW LIST"
21050 PRINT "C - CORRECT A RECORD"
21060 PRINT "D - DISPLAY A RECORD IN DETAIL"
21063 PRINT "E - END THE LISTING SESSION"
21065 PRINT "F - FIND RECORD(S) WITH SPECIFIC DATA"
21070 PRINT "G - GET A LIST FROM STORAGE"
21075 PRINT "H - PRINT THE COMMAND MENU (HELP)"
21090 PRINT "N - DISPLAY NAMES OF LISTS IN STORAGE"
21100 PRINT "P - PUT A LIST INTO STORAGE"
21110 PRINT "R - REMOVE A RECORD FROM THE LIST"
21300 PRINT
21310 PRINT "ENTER THE LETTER THAT CORRESPONDS TO"
21320 PRINT "THE FUNCTION YOU WANT TO PERFORM."
21330 PRINT
21800 PRINT
21990 RETURN
22000 REM
22001 REM END THE SESSION
22010 PRINT
22020 PRINT "THANK YOU"
22030 PRINT
22990 END
25000 REM
25001 REM DISPLAY 1 RECORD
25002 REM
25010 PRINT
25020 NORMAL
25030 IF STARTRCD <1 THEN RETURN
25035 IF STARTRCD >A2NXTRCD -1 THEN RETURN
25040 PRINT STARTRCD;
25050 HTAB 5
25060 FOR X = 1 TO N1FLDNBR
25070 NORMAL
25080 HTAB 5
25090 PRINT N7FLDNAME$(X);":";
25100 INVERSE
25110 PRINT WRKSPACE$(STARTRCD,X)
25120 NEXT X
25130 NORMAL
25300 RETURN
26000 REM
26001 REM FIND A RECORD
26002 REM
26010 P1HDG$ = "FIND A RECORD"
26020 GOSUB 30000
26030 PRINT "ENTER THE VALUE(S) TO BE FOUND FOR EACH"
26040 PRINT "FIELD OR PRESS RETURN FOR A FIELD."
26050 FOR X = 1 TO N1FLDNBR
26060 PRINT "ENTER A VALUE FOR ";N7FLDNAME$(X);
26070 INPUT "<CTRL-G>:";N2SEL$(X)
26080 NEXT X
26085 A = 1
26090 FOR X = A TO A2NXTREC
26100 FOR Y = 1 TO N1FLDNBR
26110 IF LEN(N2SEL$(Y)) < >0 THEN IF N2SEL$(Y) = LEFT$(WRKSPACE$(X,Y), LEN(N2SEL$(Y))) THEN STARTRCD = X: GOTO 26500
26120 NEXT Y
26130 NEXT X
26300 PRINT
26310 PRINT "THE END OF THE LIST HAS BEEN REACHED"
26320 PRINT
26330 RETURN
26500 GOSUB 25000
26510 PRINT
26520 PRINT "TO CONTINUE SEARCHING, PRESS RETURN"
26530 PRINT "TO END, ENTER 'E'<CTRL-G>";
26540 INPUT R$
26550 IF LEN(R$) < >0 THEN RETURN
26560 A = STARTRCD +1
26570 GOTO 26090
27000 REM
27001 REM DISPLAY A CATALOG LISTING
27002 REM
27010 P1HDG$ = "NAMES OF LISTS"
27020 GOSUB 30000
27030 PRINT "EACH LIST IS PRECEDED BY THE LETTER 'T'"
27040 PRINT "YOU MUST ENTER THE FULL NAME EXACTLY AS IT APPEARS"
27050 PRINT
27060 PRINT "<CTRL-D>CATALOG"
27065 PRINT
27070 RETURN
30000 REM
30001 REM PRINT HEADING
30002 REM
30010 HOME
30020 HTAB (40 - LEN(P1HDG$))/2
30030 PRINT P1HDG$
30040 FOR X = 1 TO 39
30050 PRINT "-";
30060 NEXT X
30070 PRINT ""
30080 PRINT
30090 RETURN